package dao

import (
	"fmt"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
	"github.com/e421083458/gin_scaffold/public"
	"github.com/e421083458/gorm"
	"github.com/gin-gonic/gin"
	"github.com/signintech/gopdf"
	"log"
	"os"
	"time"
)

//五脏
func (f *PulseInfo) Pdf(c *gin.Context, tx *gorm.DB, id, uid int) {
	err, pulsh := (&Pulse{}).UserFind(c, tx, id)
	err, user := (&Uuser{}).FindUser(c, tx, uid)
	err, wz := (&UserWuzhang{}).Wuzhang(c, tx, id)
	if err != nil {
		return
	}
	fmt.Println(user.Id)
	fmt.Println(wz[0].Uid)
	pdf := gopdf.GoPdf{}
	pdf.Start(gopdf.Config{PageSize: *gopdf.PageSizeA4})
	pdf.AddPage()
	//设置font
	err = pdf.AddTTFFont("wst11", "./font/NotoSansSC-Regular.ttf")
	if err != nil {
		log.Print(err.Error())
		return
	}
	err = pdf.SetFont("wst11", "", 14)
	if err != nil {
		log.Print(err.Error())
		return
	}

	//添加表格的标题
	pdf.SetX(47)
	pdf.SetY(20)

	alignOption := gopdf.CellOption{Align: gopdf.Center | gopdf.Middle,
		Border: gopdf.Left | gopdf.Right | gopdf.Bottom | gopdf.Top}

	pdf.CellWithOption(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "数字中医五脏功能辩证报告", alignOption)

	//姓名
	pdf.SetX(47)
	pdf.SetY(50)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "姓名", alignOption)

	pdf.SetX(247)
	pdf.SetY(50)

	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, user.Truename, alignOption)

	//性别
	pdf.SetX(47)
	pdf.SetY(75)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "性别", alignOption)

	pdf.SetX(247)
	pdf.SetY(75)
	sex := "未公开"
	if user.Sex == 1 {
		sex = "男"
	} else if user.Sex == 2 {
		sex = "女"
	} else {
		sex = "未公开"
	}
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, sex, alignOption)
	//年龄
	pdf.SetX(47)
	pdf.SetY(100)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "年龄", alignOption)
	pdf.SetX(247)
	pdf.SetY(100)
	y, _, _ := GetTimeFromStrDate(user.Birthday)

	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, public.String(int32(GetAge(y))), alignOption)

	//电话
	pdf.SetX(47)
	pdf.SetY(125)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "电话", alignOption)
	pdf.SetX(247)
	pdf.SetY(125)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, user.Userphone, alignOption)
	//评估时间
	pdf.SetX(47)
	pdf.SetY(150)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "评估时间", alignOption)
	timeLayout := "2006-01-02 15:04:05" //转化所需模板
	pdf.SetX(247)
	pdf.SetY(150)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, time.Unix(wz[0].Addtime, 0).Format(timeLayout), alignOption)

	//评估类型
	pdf.SetX(47)
	pdf.SetY(175)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "评估类型", alignOption)
	pdf.SetX(247)
	pdf.SetY(175)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, "五脏功能", alignOption)
	//信息采集方式
	pdf.SetX(47)
	pdf.SetY(200)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "信息采集方式", alignOption)
	pdf.SetX(247)
	pdf.SetY(200)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, "腕式电子血压计", alignOption)
	//标本类型
	pdf.SetX(47)
	pdf.SetY(225)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "标本类型", alignOption)
	pdf.SetX(247)
	pdf.SetY(225)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, "腕动脉数字值", alignOption)

	//添加表格的标题
	pdf.SetX(47)
	pdf.SetY(250)

	pdf.CellWithOption(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "信息采集内容", alignOption)
	//
	pdf.SetX(47)
	pdf.SetY(280)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "采集项目", alignOption)
	pdf.SetX(172)
	pdf.SetY(280)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "左侧", alignOption)
	pdf.SetX(297)
	pdf.SetY(280)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "右侧", alignOption)
	pdf.SetX(422)
	pdf.SetY(280)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "参考值", alignOption)
	//
	pdf.SetX(47)
	pdf.SetY(305)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "脉搏", alignOption)
	pdf.SetX(172)
	pdf.SetY(305)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Leftrate)), alignOption)
	pdf.SetX(297)
	pdf.SetY(305)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Rightrate)), alignOption)
	pdf.SetX(422)
	pdf.SetY(305)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "65-85", alignOption)
	//
	pdf.SetX(47)
	pdf.SetY(330)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "低压", alignOption)
	pdf.SetX(172)
	pdf.SetY(330)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Leftlowpre)), alignOption)
	pdf.SetX(297)
	pdf.SetY(330)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Rightlowpre)), alignOption)
	pdf.SetX(422)
	pdf.SetY(330)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "65-85", alignOption)
	//
	pdf.SetX(47)
	pdf.SetY(355)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "高压", alignOption)
	pdf.SetX(172)
	pdf.SetY(355)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Lefthightpre)), alignOption)
	pdf.SetX(297)
	pdf.SetY(355)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Righthightpre)), alignOption)
	pdf.SetX(422)
	pdf.SetY(355)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "90-110", alignOption)
	//添加表格的标题
	pdf.SetX(47)
	pdf.SetY(380)

	pdf.CellWithOption(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "五脏功能功能辩证", alignOption)

	//心
	pdf.SetX(47)
	pdf.SetY(410)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Heartname, alignOption)
	pdf.SetX(297)
	pdf.SetY(410)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Heartstatus, alignOption)
	//肝
	pdf.SetX(47)
	pdf.SetY(435)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Algorithmname, alignOption)
	pdf.SetX(297)
	pdf.SetY(435)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Algorithmstatus, alignOption)
	//脾
	pdf.SetX(47)
	pdf.SetY(460)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Spleenname, alignOption)
	pdf.SetX(297)
	pdf.SetY(460)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Spleenstatus, alignOption)
	//肺
	pdf.SetX(47)
	pdf.SetY(485)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Lungsname, alignOption)
	pdf.SetX(297)
	pdf.SetY(485)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Lungstatus, alignOption)
	//肾
	pdf.SetX(47)
	pdf.SetY(510)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Renalname, alignOption)
	pdf.SetX(297)
	pdf.SetY(510)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Renalstatus, alignOption)
	//添加表格的标题
	pdf.SetX(47)
	pdf.SetY(545)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "《数字脉诊中医功能体征评估报告》")
	pdf.SetX(47)
	pdf.SetY(575)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "将脏腑功能与自觉症状等健康状态分成五级，按照轻度、中度、重度、严重。")
	pdf.SetX(47)
	pdf.SetY(600)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "轻度：脏腑功能失调，个别敏感患者开始有轻微症状，医院诊断没有结果。")

	pdf.SetX(47)
	pdf.SetY(625)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "中度：脏腑功能失调，患者皆有明显自觉症状，但不影响工作，医院诊断没有结果。")

	pdf.SetX(47)
	pdf.SetY(650)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "重度：脏腑功能失调，患者自觉症状明显，影响工作，医院诊断没有结果。")

	pdf.SetX(47)
	pdf.SetY(675)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "严重：脏腑功能失调严重，患者工作能力严重受到影响，部分患者在医院诊断有结果。")

	pdf.SetX(87)
	pdf.SetY(800)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "*本报告由志超歧黄（北京）国际医学研究院量化中医远程中心提供*")

	filename := public.Generate(time.Now()) + ".pdf"

	err = pdf.WritePdf(filename)
	if err != nil {
		fmt.Println(err)
	}
	//保存到表
	filepath := "https://jiankangdanganguan2.oss-cn-beijing.aliyuncs.com/pdf/" + filename
	(&UserWuzhang{}).WzPdfSave(c, tx, id, filepath)
	client, err := oss.New("oss-cn-beijing.aliyuncs.com", "LTAI5tGQntrEsXrVD4ZKH6rF", "kwnU0K1xyp0YZism6eilflHIxLadb7")
	if err != nil {
		// HandleError(err)
	}

	bucket, err := client.Bucket("jiankangdanganguan2")

	if err != nil {
		// HandleError(err)
	}

	err = bucket.PutObjectFromFile("pdf/"+filename, "./"+filename)
	if err != nil {
		// HandleError(err)
	}
	//删除本地生成的Pdf
	err = os.Remove(filename)
	if err != nil {

	} else {
		// 删除成功
	}
}

//六腑
func (f *PulseInfo) Pdfliufu(c *gin.Context, tx *gorm.DB, id, uid int) {
	err, pulsh := (&Pulse{}).UserFind(c, tx, id)
	err, user := (&Uuser{}).FindUser(c, tx, uid)
	err, wz := (&UserLiufu{}).Liufu(c, tx, id)
	if err != nil {
		return
	}
	fmt.Println(user.Id)
	fmt.Println(wz[0].Uid)
	pdf := gopdf.GoPdf{}
	pdf.Start(gopdf.Config{PageSize: *gopdf.PageSizeA4})
	pdf.AddPage()
	//设置font
	err = pdf.AddTTFFont("wst11", "./font/NotoSansSC-Regular.ttf")
	if err != nil {
		log.Print(err.Error())
		return
	}
	err = pdf.SetFont("wst11", "", 14)
	if err != nil {
		log.Print(err.Error())
		return
	}

	//添加表格的标题
	pdf.SetX(47)
	pdf.SetY(20)

	alignOption := gopdf.CellOption{Align: gopdf.Center | gopdf.Middle,
		Border: gopdf.Left | gopdf.Right | gopdf.Bottom | gopdf.Top}

	pdf.CellWithOption(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "数字中医六腑功能辩证报告", alignOption)

	//姓名
	pdf.SetX(47)
	pdf.SetY(50)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "姓名", alignOption)

	pdf.SetX(247)
	pdf.SetY(50)

	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, user.Truename, alignOption)

	//性别
	pdf.SetX(47)
	pdf.SetY(75)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "性别", alignOption)

	pdf.SetX(247)
	pdf.SetY(75)
	sex := "未公开"
	if user.Sex == 1 {
		sex = "男"
	} else if user.Sex == 2 {
		sex = "女"
	} else {
		sex = "未公开"
	}
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, sex, alignOption)
	//年龄
	pdf.SetX(47)
	pdf.SetY(100)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "年龄", alignOption)
	pdf.SetX(247)
	pdf.SetY(100)
	y, _, _ := GetTimeFromStrDate(user.Birthday)

	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, public.String(int32(GetAge(y))), alignOption)

	//电话
	pdf.SetX(47)
	pdf.SetY(125)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "电话", alignOption)
	pdf.SetX(247)
	pdf.SetY(125)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, user.Userphone, alignOption)
	//评估时间
	pdf.SetX(47)
	pdf.SetY(150)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "评估时间", alignOption)
	timeLayout := "2006-01-02 15:04:05" //转化所需模板
	pdf.SetX(247)
	pdf.SetY(150)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, time.Unix(wz[0].Addtime, 0).Format(timeLayout), alignOption)

	//评估类型
	pdf.SetX(47)
	pdf.SetY(175)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "评估类型", alignOption)
	pdf.SetX(247)
	pdf.SetY(175)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, "六腑功能", alignOption)
	//信息采集方式
	pdf.SetX(47)
	pdf.SetY(200)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "信息采集方式", alignOption)
	pdf.SetX(247)
	pdf.SetY(200)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, "腕式电子血压计", alignOption)
	//标本类型
	pdf.SetX(47)
	pdf.SetY(225)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "标本类型", alignOption)
	pdf.SetX(247)
	pdf.SetY(225)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, "腕动脉数字值", alignOption)

	//添加表格的标题
	pdf.SetX(47)
	pdf.SetY(250)

	pdf.CellWithOption(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "信息采集内容", alignOption)
	//
	pdf.SetX(47)
	pdf.SetY(280)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "采集项目", alignOption)
	pdf.SetX(172)
	pdf.SetY(280)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "左侧", alignOption)
	pdf.SetX(297)
	pdf.SetY(280)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "右侧", alignOption)
	pdf.SetX(422)
	pdf.SetY(280)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "参考值", alignOption)
	//
	pdf.SetX(47)
	pdf.SetY(305)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "脉搏", alignOption)
	pdf.SetX(172)
	pdf.SetY(305)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Leftrate)), alignOption)
	pdf.SetX(297)
	pdf.SetY(305)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Rightrate)), alignOption)
	pdf.SetX(422)
	pdf.SetY(305)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "65-85", alignOption)
	//
	pdf.SetX(47)
	pdf.SetY(330)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "低压", alignOption)
	pdf.SetX(172)
	pdf.SetY(330)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Leftlowpre)), alignOption)
	pdf.SetX(297)
	pdf.SetY(330)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Rightlowpre)), alignOption)
	pdf.SetX(422)
	pdf.SetY(330)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "65-85", alignOption)
	//
	pdf.SetX(47)
	pdf.SetY(355)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "高压", alignOption)
	pdf.SetX(172)
	pdf.SetY(355)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Lefthightpre)), alignOption)
	pdf.SetX(297)
	pdf.SetY(355)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Righthightpre)), alignOption)
	pdf.SetX(422)
	pdf.SetY(355)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "90-110", alignOption)
	//添加表格的标题
	pdf.SetX(47)
	pdf.SetY(380)

	pdf.CellWithOption(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "六腑功能功能辩证", alignOption)

	//心
	pdf.SetX(47)
	pdf.SetY(410)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Gallname, alignOption)
	pdf.SetX(297)
	pdf.SetY(410)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Gallstatus, alignOption)
	//肝
	pdf.SetX(47)
	pdf.SetY(435)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Stomachname, alignOption)
	pdf.SetX(297)
	pdf.SetY(435)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Stomachstatus, alignOption)
	//脾
	pdf.SetX(47)
	pdf.SetY(460)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Largename, alignOption)
	pdf.SetX(297)
	pdf.SetY(460)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Largestatus, alignOption)
	//肺
	pdf.SetX(47)
	pdf.SetY(485)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Smallname, alignOption)
	pdf.SetX(297)
	pdf.SetY(485)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Smallstatus, alignOption)
	//肾
	pdf.SetX(47)
	pdf.SetY(510)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Bladdername, alignOption)
	pdf.SetX(297)
	pdf.SetY(510)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Bladderstatus, alignOption)
	//添加表格的标题
	pdf.SetX(47)
	pdf.SetY(545)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "《数字脉诊中医功能体征评估报告》")
	pdf.SetX(47)
	pdf.SetY(575)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "将脏腑功能与自觉症状等健康状态分成五级，按照轻度、中度、重度、严重。")
	pdf.SetX(47)
	pdf.SetY(600)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "轻度：脏腑功能失调，个别敏感患者开始有轻微症状，医院诊断没有结果。")

	pdf.SetX(47)
	pdf.SetY(625)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "中度：脏腑功能失调，患者皆有明显自觉症状，但不影响工作，医院诊断没有结果。")

	pdf.SetX(47)
	pdf.SetY(650)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "重度：脏腑功能失调，患者自觉症状明显，影响工作，医院诊断没有结果。")

	pdf.SetX(47)
	pdf.SetY(675)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "严重：脏腑功能失调严重，患者工作能力严重受到影响，部分患者在医院诊断有结果。")

	pdf.SetX(87)
	pdf.SetY(800)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "*本报告由志超歧黄（北京）国际医学研究院量化中医远程中心提供*")

	filename := public.Generate(time.Now()) + ".pdf"

	err = pdf.WritePdf(filename)
	if err != nil {
		fmt.Println(err)
	}
	//保存到表
	filepath := "https://jiankangdanganguan2.oss-cn-beijing.aliyuncs.com/pdf/" + filename
	(&UserLiufu{}).LfPdfSave(c, tx, id, filepath)
	client, err := oss.New("oss-cn-beijing.aliyuncs.com", "LTAI5tGQntrEsXrVD4ZKH6rF", "kwnU0K1xyp0YZism6eilflHIxLadb7")
	if err != nil {
		// HandleError(err)
	}

	bucket, err := client.Bucket("jiankangdanganguan2")

	if err != nil {
		// HandleError(err)
	}

	err = bucket.PutObjectFromFile("pdf/"+filename, "./"+filename)
	if err != nil {
		// HandleError(err)
	}
	//删除本地生成的Pdf
	err = os.Remove(filename)
	if err != nil {

	} else {
		// 删除成功
	}
}

//体质
func (f *PulseInfo) Pdftz(c *gin.Context, tx *gorm.DB, id, uid int) {
	err, pulsh := (&Pulse{}).UserFind(c, tx, id)
	err, user := (&Uuser{}).FindUser(c, tx, uid)
	err, wz := (&Tizhi{}).TizhiFind(c, tx, id)
	if err != nil {
		return
	}
	fmt.Println(user.Id)
	fmt.Println(wz[0].Uid)
	pdf := gopdf.GoPdf{}
	pdf.Start(gopdf.Config{PageSize: *gopdf.PageSizeA4})
	pdf.AddPage()
	//设置font
	err = pdf.AddTTFFont("wst11", "./font/NotoSansSC-Regular.ttf")
	if err != nil {
		log.Print(err.Error())
		return
	}
	err = pdf.SetFont("wst11", "", 14)
	if err != nil {
		log.Print(err.Error())
		return
	}

	//添加表格的标题
	pdf.SetX(47)
	pdf.SetY(20)

	alignOption := gopdf.CellOption{Align: gopdf.Center | gopdf.Middle,
		Border: gopdf.Left | gopdf.Right | gopdf.Bottom | gopdf.Top}

	pdf.CellWithOption(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "数字中医体质分析辩证报告", alignOption)

	//姓名
	pdf.SetX(47)
	pdf.SetY(50)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "姓名", alignOption)

	pdf.SetX(247)
	pdf.SetY(50)

	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, user.Truename, alignOption)

	//性别
	pdf.SetX(47)
	pdf.SetY(75)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "性别", alignOption)

	pdf.SetX(247)
	pdf.SetY(75)
	sex := "未公开"
	if user.Sex == 1 {
		sex = "男"
	} else if user.Sex == 2 {
		sex = "女"
	} else {
		sex = "未公开"
	}
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, sex, alignOption)
	//年龄
	pdf.SetX(47)
	pdf.SetY(100)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "年龄", alignOption)
	pdf.SetX(247)
	pdf.SetY(100)
	y, _, _ := GetTimeFromStrDate(user.Birthday)

	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, public.String(int32(GetAge(y))), alignOption)

	//电话
	pdf.SetX(47)
	pdf.SetY(125)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "电话", alignOption)
	pdf.SetX(247)
	pdf.SetY(125)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, user.Userphone, alignOption)
	//评估时间
	pdf.SetX(47)
	pdf.SetY(150)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "评估时间", alignOption)
	timeLayout := "2006-01-02 15:04:05" //转化所需模板
	pdf.SetX(247)
	pdf.SetY(150)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, time.Unix(wz[0].Addtime, 0).Format(timeLayout), alignOption)

	//评估类型
	pdf.SetX(47)
	pdf.SetY(175)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "评估类型", alignOption)
	pdf.SetX(247)
	pdf.SetY(175)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, "体质分析", alignOption)
	//信息采集方式
	pdf.SetX(47)
	pdf.SetY(200)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "信息采集方式", alignOption)
	pdf.SetX(247)
	pdf.SetY(200)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, "腕式电子血压计", alignOption)
	//标本类型
	pdf.SetX(47)
	pdf.SetY(225)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "标本类型", alignOption)
	pdf.SetX(247)
	pdf.SetY(225)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, "腕动脉数字值", alignOption)

	//添加表格的标题
	pdf.SetX(47)
	pdf.SetY(250)

	pdf.CellWithOption(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "信息采集内容", alignOption)
	//
	pdf.SetX(47)
	pdf.SetY(280)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "采集项目", alignOption)
	pdf.SetX(172)
	pdf.SetY(280)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "左侧", alignOption)
	pdf.SetX(297)
	pdf.SetY(280)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "右侧", alignOption)
	pdf.SetX(422)
	pdf.SetY(280)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "参考值", alignOption)
	//
	pdf.SetX(47)
	pdf.SetY(305)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "脉搏", alignOption)
	pdf.SetX(172)
	pdf.SetY(305)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Leftrate)), alignOption)
	pdf.SetX(297)
	pdf.SetY(305)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Rightrate)), alignOption)
	pdf.SetX(422)
	pdf.SetY(305)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "65-85", alignOption)
	//
	pdf.SetX(47)
	pdf.SetY(330)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "低压", alignOption)
	pdf.SetX(172)
	pdf.SetY(330)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Leftlowpre)), alignOption)
	pdf.SetX(297)
	pdf.SetY(330)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Rightlowpre)), alignOption)
	pdf.SetX(422)
	pdf.SetY(330)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "65-85", alignOption)
	//
	pdf.SetX(47)
	pdf.SetY(355)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "高压", alignOption)
	pdf.SetX(172)
	pdf.SetY(355)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Lefthightpre)), alignOption)
	pdf.SetX(297)
	pdf.SetY(355)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Righthightpre)), alignOption)
	pdf.SetX(422)
	pdf.SetY(355)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "90-110", alignOption)
	//添加表格的标题
	pdf.SetX(47)
	pdf.SetY(380)

	pdf.CellWithOption(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "体质分析", alignOption)

	//心
	pdf.SetX(47)
	pdf.SetY(410)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Constitutioname, alignOption)
	pdf.SetX(297)
	pdf.SetY(410)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Constitution, alignOption)

	//添加表格的标题
	pdf.SetX(47)
	pdf.SetY(545)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "《数字脉诊中医功能体征评估报告》")
	pdf.SetX(47)
	pdf.SetY(575)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "将脏腑功能与自觉症状等健康状态分成五级，按照轻度、中度、重度、严重。")
	pdf.SetX(47)
	pdf.SetY(600)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "轻度：脏腑功能失调，个别敏感患者开始有轻微症状，医院诊断没有结果。")

	pdf.SetX(47)
	pdf.SetY(625)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "中度：脏腑功能失调，患者皆有明显自觉症状，但不影响工作，医院诊断没有结果。")

	pdf.SetX(47)
	pdf.SetY(650)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "重度：脏腑功能失调，患者自觉症状明显，影响工作，医院诊断没有结果。")

	pdf.SetX(47)
	pdf.SetY(675)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "严重：脏腑功能失调严重，患者工作能力严重受到影响，部分患者在医院诊断有结果。")

	pdf.SetX(87)
	pdf.SetY(800)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "*本报告由志超歧黄（北京）国际医学研究院量化中医远程中心提供*")

	filename := public.Generate(time.Now()) + ".pdf"

	err = pdf.WritePdf(filename)
	if err != nil {
		fmt.Println(err)
	}
	//保存到表
	filepath := "https://jiankangdanganguan2.oss-cn-beijing.aliyuncs.com/pdf/" + filename
	(&Tizhi{}).TzPdfSave(c, tx, id, filepath)
	client, err := oss.New("oss-cn-beijing.aliyuncs.com", "LTAI5tGQntrEsXrVD4ZKH6rF", "kwnU0K1xyp0YZism6eilflHIxLadb7")
	if err != nil {
		// HandleError(err)
	}

	bucket, err := client.Bucket("jiankangdanganguan2")

	if err != nil {
		// HandleError(err)
	}

	err = bucket.PutObjectFromFile("pdf/"+filename, "./"+filename)
	if err != nil {
		// HandleError(err)
	}
	//删除本地生成的Pdf
	err = os.Remove(filename)
	if err != nil {

	} else {
		// 删除成功
	}
}

//大病
func (f *PulseInfo) Dbfliufu(c *gin.Context, tx *gorm.DB, id, uid int) {
	err, pulsh := (&Pulse{}).UserFind(c, tx, id)
	err, user := (&Uuser{}).FindUser(c, tx, uid)
	err, wz := (&Dabing{}).DabingFind(c, tx, id)
	if err != nil {
		return
	}
	fmt.Println(user.Id)
	fmt.Println(wz[0].Uid)
	pdf := gopdf.GoPdf{}
	pdf.Start(gopdf.Config{PageSize: *gopdf.PageSizeA4})
	pdf.AddPage()
	//设置font
	err = pdf.AddTTFFont("wst11", "./font/NotoSansSC-Regular.ttf")
	if err != nil {
		log.Print(err.Error())
		return
	}
	err = pdf.SetFont("wst11", "", 14)
	if err != nil {
		log.Print(err.Error())
		return
	}

	//添加表格的标题
	pdf.SetX(47)
	pdf.SetY(20)

	alignOption := gopdf.CellOption{Align: gopdf.Center | gopdf.Middle,
		Border: gopdf.Left | gopdf.Right | gopdf.Bottom | gopdf.Top}

	pdf.CellWithOption(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "数字中医大病预警辩证报告", alignOption)

	//姓名
	pdf.SetX(47)
	pdf.SetY(50)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "姓名", alignOption)

	pdf.SetX(247)
	pdf.SetY(50)

	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, user.Truename, alignOption)

	//性别
	pdf.SetX(47)
	pdf.SetY(75)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "性别", alignOption)

	pdf.SetX(247)
	pdf.SetY(75)
	sex := "未公开"
	if user.Sex == 1 {
		sex = "男"
	} else if user.Sex == 2 {
		sex = "女"
	} else {
		sex = "未公开"
	}
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, sex, alignOption)
	//年龄
	pdf.SetX(47)
	pdf.SetY(100)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "年龄", alignOption)
	pdf.SetX(247)
	pdf.SetY(100)
	y, _, _ := GetTimeFromStrDate(user.Birthday)

	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, public.String(int32(GetAge(y))), alignOption)

	//电话
	pdf.SetX(47)
	pdf.SetY(125)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "电话", alignOption)
	pdf.SetX(247)
	pdf.SetY(125)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, user.Userphone, alignOption)
	//评估时间
	pdf.SetX(47)
	pdf.SetY(150)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "评估时间", alignOption)
	timeLayout := "2006-01-02 15:04:05" //转化所需模板
	pdf.SetX(247)
	pdf.SetY(150)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, time.Unix(wz[0].Addtime, 0).Format(timeLayout), alignOption)

	//评估类型
	pdf.SetX(47)
	pdf.SetY(175)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "评估类型", alignOption)
	pdf.SetX(247)
	pdf.SetY(175)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, "大病预警", alignOption)
	//信息采集方式
	pdf.SetX(47)
	pdf.SetY(200)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "信息采集方式", alignOption)
	pdf.SetX(247)
	pdf.SetY(200)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, "腕式电子血压计", alignOption)
	//标本类型
	pdf.SetX(47)
	pdf.SetY(225)
	pdf.CellWithOption(&gopdf.Rect{
		W: 200,
		H: 25,
	}, "标本类型", alignOption)
	pdf.SetX(247)
	pdf.SetY(225)
	pdf.CellWithOption(&gopdf.Rect{
		W: 300,
		H: 25,
	}, "腕动脉数字值", alignOption)

	//添加表格的标题
	pdf.SetX(47)
	pdf.SetY(250)

	pdf.CellWithOption(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "信息采集内容", alignOption)
	//
	pdf.SetX(47)
	pdf.SetY(280)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "采集项目", alignOption)
	pdf.SetX(172)
	pdf.SetY(280)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "左侧", alignOption)
	pdf.SetX(297)
	pdf.SetY(280)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "右侧", alignOption)
	pdf.SetX(422)
	pdf.SetY(280)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "参考值", alignOption)
	//
	pdf.SetX(47)
	pdf.SetY(305)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "脉搏", alignOption)
	pdf.SetX(172)
	pdf.SetY(305)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Leftrate)), alignOption)
	pdf.SetX(297)
	pdf.SetY(305)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Rightrate)), alignOption)
	pdf.SetX(422)
	pdf.SetY(305)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "65-85", alignOption)
	//
	pdf.SetX(47)
	pdf.SetY(330)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "低压", alignOption)
	pdf.SetX(172)
	pdf.SetY(330)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Leftlowpre)), alignOption)
	pdf.SetX(297)
	pdf.SetY(330)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Rightlowpre)), alignOption)
	pdf.SetX(422)
	pdf.SetY(330)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "65-85", alignOption)
	//
	pdf.SetX(47)
	pdf.SetY(355)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "高压", alignOption)
	pdf.SetX(172)
	pdf.SetY(355)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Lefthightpre)), alignOption)
	pdf.SetX(297)
	pdf.SetY(355)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, public.String(int32(pulsh[0].Righthightpre)), alignOption)
	pdf.SetX(422)
	pdf.SetY(355)
	pdf.CellWithOption(&gopdf.Rect{
		W: 125,
		H: 25,
	}, "90-110", alignOption)
	//添加表格的标题
	pdf.SetX(47)
	pdf.SetY(380)

	pdf.CellWithOption(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "大病预警", alignOption)

	//心
	pdf.SetX(47)
	pdf.SetY(410)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, "中风预警", alignOption)
	pdf.SetX(297)
	pdf.SetY(410)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Apoplexy, alignOption)
	//肝
	pdf.SetX(47)
	pdf.SetY(435)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, "心脏病预警", alignOption)
	pdf.SetX(297)
	pdf.SetY(435)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Heart, alignOption)
	//脾
	pdf.SetX(47)
	pdf.SetY(460)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, "肿瘤预警", alignOption)
	pdf.SetX(297)
	pdf.SetY(460)
	pdf.CellWithOption(&gopdf.Rect{
		W: 250,
		H: 25,
	}, wz[0].Tumour, alignOption)

	//添加表格的标题
	pdf.SetX(47)
	pdf.SetY(545)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "《数字脉诊中医功能体征评估报告》")
	pdf.SetX(47)
	pdf.SetY(575)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "将脏腑功能与自觉症状等健康状态分成五级，按照轻度、中度、重度、严重。")
	pdf.SetX(47)
	pdf.SetY(600)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "轻度：脏腑功能失调，个别敏感患者开始有轻微症状，医院诊断没有结果。")

	pdf.SetX(47)
	pdf.SetY(625)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "中度：脏腑功能失调，患者皆有明显自觉症状，但不影响工作，医院诊断没有结果。")

	pdf.SetX(47)
	pdf.SetY(650)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "重度：脏腑功能失调，患者自觉症状明显，影响工作，医院诊断没有结果。")

	pdf.SetX(47)
	pdf.SetY(675)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "严重：脏腑功能失调严重，患者工作能力严重受到影响，部分患者在医院诊断有结果。")

	pdf.SetX(87)
	pdf.SetY(800)
	pdf.Cell(&gopdf.Rect{
		W: 500,
		H: 30,
	}, "*本报告由志超歧黄（北京）国际医学研究院量化中医远程中心提供*")

	filename := public.Generate(time.Now()) + ".pdf"

	err = pdf.WritePdf(filename)
	if err != nil {
		fmt.Println(err)
	}
	//保存到表
	filepath := "https://jiankangdanganguan2.oss-cn-beijing.aliyuncs.com/pdf/" + filename
	(&Dabing{}).DbPdfSave(c, tx, id, filepath)
	client, err := oss.New("oss-cn-beijing.aliyuncs.com", "LTAI5tGQntrEsXrVD4ZKH6rF", "kwnU0K1xyp0YZism6eilflHIxLadb7")
	if err != nil {
		// HandleError(err)
	}

	bucket, err := client.Bucket("jiankangdanganguan2")

	if err != nil {
		// HandleError(err)
	}

	err = bucket.PutObjectFromFile("pdf/"+filename, "./"+filename)
	if err != nil {
		// HandleError(err)
	}
	//删除本地生成的Pdf
	err = os.Remove(filename)
	if err != nil {

	} else {
		// 删除成功
	}
}
func GetTimeFromStrDate(date string) (year, month, day int) {
	const shortForm = "2006-01-02"
	d, err := time.Parse(shortForm, date)
	if err != nil {
		fmt.Println("出生日期解析错误！")
		return 0, 0, 0
	}
	year = d.Year()
	month = int(d.Month())
	day = d.Day()
	return
}
func GetAge(year int) (age int) {
	if year <= 0 {
		age = -1
	}
	nowyear := time.Now().Year()
	age = nowyear - year
	return
}
